home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 15 / CU Amiga Magazine's Super CD-ROM 15 (1997)(EMAP Images)(GB)[!][issue 1997-10].iso / CUCD / Utilities / Post / Source / PostWin.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-01  |  21.3 KB  |  635 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : -- Unnamed --
  6.  */
  7.  
  8. #include "PostPre.h"
  9. #include "PostWin.h"
  10. #include "Global.h"
  11.  
  12. extern    APTR            my_VisualInfo;
  13. extern    struct Screen *screen;
  14.  
  15. struct Window         *OptionsWnd = NULL;
  16. struct Window         *ChoosePSWnd = NULL;
  17. struct Window         *GotoPageWnd = NULL;
  18. struct Gadget         *OptionsGList = NULL;
  19. struct Gadget         *ChoosePSGList = NULL;
  20. struct Gadget         *GotoPageGList = NULL;
  21. struct Menu           *MenuMenus = NULL;
  22. struct Menu           *OptionsMenus = NULL;
  23. struct IntuiMessage    OptionsMsg;
  24. struct IntuiMessage    ChoosePSMsg;
  25. struct IntuiMessage    GotoPageMsg;
  26. struct Gadget         *OptionsGadgets[30];
  27. struct Gadget         *ChoosePSGadgets[3];
  28. struct Gadget         *GotoPageGadgets[1];
  29. extern Class          *initGet( void );
  30. struct IClass         *getClass = NULL;
  31. struct _Object        *getImage = NULL;
  32. UWORD                  OptionsLeft = 0;
  33. UWORD                  OptionsTop = 15;
  34. UWORD                  OptionsWidth = 495;
  35. UWORD                  OptionsHeight = 187;
  36. UWORD                  ChoosePSLeft = 0;
  37. UWORD                  ChoosePSTop = 0;
  38. UWORD                  ChoosePSWidth = 215;
  39. UWORD                  ChoosePSHeight = 76;
  40. UWORD                  GotoPageLeft = 0;
  41. UWORD                  GotoPageTop = 17;
  42. UWORD                  GotoPageWidth = 207;
  43. UWORD                  GotoPageHeight = 33;
  44. UBYTE                 *OptionsWdt = NULL;
  45. UBYTE                 *ChoosePSWdt = (UBYTE *)"Choose Public Screen";
  46. UBYTE                 *GotoPageWdt = (UBYTE *)"Goto Page";
  47. struct TextAttr       *Font, Attr;
  48. UWORD                  FontX, FontY;
  49. UWORD                  OffX, OffY;
  50.  
  51. UBYTE *OptColor0Labels[] = {
  52.     (UBYTE *)"_BW",
  53.     (UBYTE *)"_RGB",
  54.     (UBYTE *)"C_MYK",
  55.     NULL };
  56.  
  57. UBYTE *OptPrDen0Labels[] = {
  58.     (UBYTE *)"Density = 1",
  59.     (UBYTE *)"Density = 2",
  60.     (UBYTE *)"Density = 3",
  61.     (UBYTE *)"Density = 4",
  62.     (UBYTE *)"Density = 5",
  63.     (UBYTE *)"Density = 6",
  64.     (UBYTE *)"Density = 7",
  65.     NULL };
  66.  
  67. struct NewMenu OptionsNewMenu[] = {
  68.     {NM_TITLE, (STRPTR)"Options", NULL, 0, NULL, NULL,},
  69.     {NM_ITEM, (STRPTR)"Open ...", (STRPTR)"O", 0, 0L, (APTR)OptionsMenuOpen,},
  70.     {NM_ITEM, (STRPTR)"Save As ...", (STRPTR)"A", 0, 0L, (APTR)OptionsMenuSave,},
  71.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  72.     {NM_ITEM, (STRPTR)"Reset To Defaults", (STRPTR)"D", 0, 0L, (APTR)OptionsMenuDefaults,},
  73.     {NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, (APTR)OptionsMenuLastSaved,},
  74.     {NM_END, NULL, NULL, 0, 0L, NULL}, };
  75.  
  76. struct NewMenu MenuNewMenu[] = {
  77.     {NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,},
  78.     {NM_ITEM, (STRPTR)"New", (STRPTR)"N", 0, 0L, (APTR)MenuNew,},
  79.     {NM_ITEM, (STRPTR)"Clear", (STRPTR)"C", 0, 0L, (APTR)MenuClear,},
  80.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  81.     {NM_ITEM, (STRPTR)"Open File...", (STRPTR)"O", 0, 0L, (APTR)MenuOpen,},
  82.     {NM_ITEM, (STRPTR)"Run File ...", (STRPTR)"R", 0, 0L, (APTR)MenuRun,},
  83.     {NM_ITEM, (STRPTR)"Load Font ...", (STRPTR)"F", 0, 0L, (APTR)MenuFont,},
  84.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  85.     {NM_ITEM, (STRPTR)"Save As Iff ...", (STRPTR)"S", 0, 0L, (APTR)MenuIff,},
  86.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  87.     {NM_ITEM, (STRPTR)"Print ...", (STRPTR)"P", 0, 0L, (APTR)MenuPrint,},
  88.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  89.     {NM_ITEM, (STRPTR)"About ...", (STRPTR)"?", 0, 0L, (APTR)MenuAbout,},
  90.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  91.     {NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)MenuQuit,},
  92.     {NM_TITLE, (STRPTR)"Control", NULL, 0, NULL, NULL,},
  93.     {NM_ITEM, (STRPTR)"Pause Every Page", (STRPTR)"Y", CHECKIT|CHECKED, 0L, (APTR)MenuPause,},
  94.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  95.     {NM_ITEM, (STRPTR)"Next Page", (STRPTR)"+", 0, 0L, (APTR)MenuNext,},
  96.     {NM_ITEM, (STRPTR)"Previous Page", (STRPTR)"-", 0, 0L, (APTR)MenuPrevious,},
  97.     {NM_ITEM, (STRPTR)"Goto Page ...", (STRPTR)"G", 0, 0L, (APTR)MenuGoto,},
  98.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  99.     {NM_ITEM, (STRPTR)"Interrupt", (STRPTR)"I", 0, 0L, (APTR)MenuInterrupt,},
  100.     {NM_ITEM, (STRPTR)"Kill", (STRPTR)"K", 0, 0L, (APTR)MenuKill,},
  101.     {NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,},
  102.     {NM_ITEM, (STRPTR)"Interactive", (STRPTR)"V", 0, 0L, (APTR)MenuInteractive,},
  103.     {NM_TITLE, (STRPTR)"Prefs", NULL, 0, NULL, NULL,},
  104.     {NM_ITEM, (STRPTR)"Public Screen", (STRPTR)"B", CHECKIT, 2L, (APTR)MenuPubScreen,},
  105.     {NM_ITEM, (STRPTR)"Custom Screen",  (STRPTR)"M", CHECKIT|CHECKED, 1L, (APTR)MenuCustomScreen,},
  106.     {NM_ITEM, (STRPTR)"Edit ...", (STRPTR)"E", 0, 0L, (APTR)MenuOptions,},
  107.     {NM_END, NULL, NULL, 0, 0L, NULL}, };
  108.  
  109. UWORD OptionsGTypes[] = {
  110.     INTEGER_KIND,
  111.     INTEGER_KIND,
  112.     INTEGER_KIND,
  113.     INTEGER_KIND,
  114.     INTEGER_KIND,
  115.     INTEGER_KIND,
  116.     LISTVIEW_KIND,
  117.     BUTTON_KIND,
  118.     BUTTON_KIND,
  119.     INTEGER_KIND,
  120.     INTEGER_KIND,
  121.     INTEGER_KIND,
  122.     INTEGER_KIND,
  123.     BUTTON_KIND,
  124.     BUTTON_KIND,
  125.     BUTTON_KIND,
  126.     MX_KIND,
  127.     CYCLE_KIND,
  128.     STRING_KIND,
  129.     INTEGER_KIND,
  130.     INTEGER_KIND,
  131.     CHECKBOX_KIND,
  132.     GENERIC_KIND,
  133.     CHECKBOX_KIND,
  134.     CHECKBOX_KIND,
  135.     INTEGER_KIND,
  136.     CHECKBOX_KIND,
  137.     CHECKBOX_KIND,
  138.     STRING_KIND,
  139.     INTEGER_KIND
  140. };
  141.  
  142. UWORD ChoosePSGTypes[] = {
  143.     LISTVIEW_KIND,
  144.     BUTTON_KIND,
  145.     BUTTON_KIND
  146. };
  147.  
  148. UWORD GotoPageGTypes[] = {
  149.     INTEGER_KIND
  150. };
  151.  
  152. struct NewGadget OptionsNGad[] = {
  153.     {246, 14, 71, 12, (UBYTE *)"_Width", NULL, GD_OptWidth, PLACETEXT_LEFT, NULL, (APTR)OptWidthClicked,},
  154.     {246, 29, 71, 12, (UBYTE *)"Height", NULL, GD_OptHeight, PLACETEXT_LEFT, NULL, (APTR)OptHeightClicked,},
  155.     {246, 44, 71, 12, (UBYTE *)"XOffset", NULL, GD_OptXOff, PLACETEXT_LEFT, NULL, (APTR)OptXOffClicked,},
  156.     {246, 59, 71, 12, (UBYTE *)"YOffset", NULL, GD_OptYOff, PLACETEXT_LEFT, NULL, (APTR)OptYOffClicked,},
  157.     {246, 74, 71, 12, (UBYTE *)"XDPI", NULL, GD_OptXDPI, PLACETEXT_LEFT, NULL, (APTR)OptXDPIClicked,},
  158.     {246, 89, 71, 12, (UBYTE *)"YDPI", NULL, GD_OptYDPI, PLACETEXT_LEFT, NULL, (APTR)OptYDPIClicked,},
  159.     {11, 14, 140, 40, (UBYTE *)"Startup File(s)", NULL, GD_OptStartUp, PLACETEXT_ABOVE, NULL, (APTR)OptStartUpClicked,},
  160.     {11, 54, 56, 12, (UBYTE *)"New", NULL, GD_OptNew, PLACETEXT_IN, NULL, (APTR)OptNewClicked,},
  161.     {96, 54, 56, 12, (UBYTE *)"Del", NULL, GD_OptDel, PLACETEXT_IN, NULL, (APTR)OptDelClicked,},
  162.     {246, 104, 71, 12, (UBYTE *)"Fonts", NULL, GD_OptFonts, PLACETEXT_LEFT, NULL, (APTR)OptFontsClicked,},
  163.     {246, 119, 71, 12, (UBYTE *)"Htone", NULL, GD_OptHtone, PLACETEXT_LEFT, NULL, (APTR)OptHtoneClicked,},
  164.     {246, 134, 71, 12, (UBYTE *)"VM", NULL, GD_OptVM, PLACETEXT_LEFT, NULL, (APTR)OptVMClicked,},
  165.     {246, 149, 71, 12, (UBYTE *)"Paths", NULL, GD_OptPaths, PLACETEXT_LEFT, NULL, (APTR)OptPathsClicked,},
  166.     {11, 169, 141, 12, (UBYTE *)"_Save", NULL, GD_OptSave, PLACETEXT_IN, NULL, (APTR)OptSaveClicked,},
  167.     {176, 169, 141, 12, (UBYTE *)"_Use", NULL, GD_OptUse, PLACETEXT_IN, NULL, (APTR)OptUseClicked,},
  168.     {341, 169, 141, 12, (UBYTE *)"_Cancel", NULL, GD_OptCancel, PLACETEXT_IN, NULL, (APTR)OptCancelClicked,},
  169.     {76, 124, 17, 9, NULL, NULL, GD_OptColor, PLACETEXT_LEFT, NULL, (APTR)OptColorClicked,},
  170.     {341, 44, 141, 12, (UBYTE *)"Printer Density", NULL, GD_OptPrDen, PLACETEXT_ABOVE, NULL, (APTR)OptPrDenClicked,},
  171.     {371, 14, 111, 12, (UBYTE *)"IFF File Name", NULL, GD_OptIff, PLACETEXT_ABOVE, NULL, (APTR)OptIffClicked,},
  172.     {411, 104, 71, 12, (UBYTE *)"From", NULL, GD_OptFrom, PLACETEXT_LEFT, NULL, (APTR)OptFromClicked,},
  173.     {411, 119, 71, 12, (UBYTE *)"To", NULL, GD_OptTo, PLACETEXT_LEFT, NULL, (APTR)OptToClicked,},
  174.     {456, 89, 26, 11, (UBYTE *)"_All Pages", NULL, GD_OptAllPages, PLACETEXT_LEFT, NULL, (APTR)OptAllPagesClicked,},
  175.     {341, 14, 20, 14, NULL, NULL, GD_OptGetIff, 0, NULL, (APTR)OptGetIffClicked,},
  176.     {456, 74, 26, 11, (UBYTE *)"FormFeed", NULL, GD_OptFF, PLACETEXT_LEFT, NULL, (APTR)OptFFClicked,},
  177.     {456, 59, 26, 11, (UBYTE *)"CenterPage", NULL, GD_OptCenter, PLACETEXT_LEFT, NULL, (APTR)OptCenterClicked,},
  178.     {411, 149, 71, 12, (UBYTE *)"Bandsize", NULL, GD_OptBand, PLACETEXT_LEFT, NULL, (APTR)OptBandClicked,},
  179.     {456, 134, 26, 11, (UBYTE *)"Ban_drendering", NULL, GD_OptBandrender, PLACETEXT_LEFT, NULL, (APTR)OptBandrenderClicked,},
  180.     {126, 74, 26, 11, (UBYTE *)"Graphiccard", NULL, GD_OptGraphiccard, PLACETEXT_LEFT, NULL, (APTR)OptGraphiccardClicked,},
  181.     {81, 89, 71, 12, (UBYTE *)"Path", NULL, GD_OptTemppath, PLACETEXT_LEFT, NULL, (APTR)OptTemppathClicked,},
  182.     {81, 104, 71, 12, (UBYTE *)"Buffer", NULL, GD_OptBuffer, PLACETEXT_LEFT, NULL, (APTR)OptBufferClicked},
  183. };
  184.  
  185. struct NewGadget ChoosePSNGad[] = {
  186.     {11, 8, 191, 48, NULL, NULL, GD_PubScreenLV, 0, NULL, (APTR)PubScreenLVClicked,},
  187.     {131, 59, 71, 12, (UBYTE *)"_Cancel", NULL, GD_CPSCancel, PLACETEXT_IN, NULL, (APTR)CPSCancelClicked,},
  188.     {11, 59, 71, 12, (UBYTE *)"_Ok", NULL, GD_CPSOk, PLACETEXT_IN, NULL, (APTR)CPSOkClicked},
  189. };
  190.  
  191. struct NewGadget GotoPageNGad[] = {
  192.     {116, 8, 71, 15, (UBYTE *)"Page Number:", NULL, GD_GotoPage, PLACETEXT_LEFT, NULL, (APTR)GotoPageClicked},
  193. };
  194.  
  195. ULONG OptionsGTags[] = {
  196.     (GTIN_Number), 618, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GT_Underscore), '_', (TAG_DONE),
  197.     (GTIN_Number), 876, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  198.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  199.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  200.     (GTIN_Number), 75, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  201.     (GTIN_Number), 75, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  202.     (GTLV_Labels), NULL, (GTLV_ShowSelected), NULL, (GT_Underscore), '_', (TAG_DONE),
  203.     (GT_Underscore), '_', (TAG_DONE),
  204.     (GT_Underscore), '_', (TAG_DONE),
  205.     (GTIN_Number), 60000, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  206.     (GTIN_Number), 20000, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  207.     (GTIN_Number), 50000, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  208.     (GTIN_Number), 10000, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  209.     (GT_Underscore), '_', (TAG_DONE),
  210.     (GT_Underscore), '_', (TAG_DONE),
  211.     (GT_Underscore), '_', (TAG_DONE),
  212.     (GTMX_Active), 1, (GTMX_Labels), (ULONG)&OptColor0Labels[ 0 ], (GTMX_Spacing), 5, (GT_Underscore), '_', (TAG_DONE),
  213.     (GTCY_Active), 2, (GTCY_Labels), (ULONG)&OptPrDen0Labels[ 0 ], (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  214.     (GTST_String), NULL, (GTST_MaxChars), 256, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  215.     (GTIN_Number), 1, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  216.     (GTIN_Number), 1, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GA_Disabled), TRUE, (TAG_DONE),
  217.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  218.     (GA_Disabled), TRUE, (TAG_DONE),
  219.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  220.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  221.     (GTIN_Number), 400, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  222.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  223.     (TAG_DONE),
  224.     (GTST_String), (ULONG)"T:", (GTST_MaxChars), 256, (TAG_DONE),
  225.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE)
  226. };
  227.  
  228. ULONG ChoosePSGTags[] = {
  229.     (GTLV_ShowSelected), NULL, (TAG_DONE),
  230.     (GT_Underscore), '_', (TAG_DONE),
  231.     (GT_Underscore), '_', (TAG_DONE)
  232. };
  233.  
  234. ULONG GotoPageGTags[] = {
  235.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE)
  236. };
  237.  
  238. static UWORD ComputeX( UWORD value )
  239. {
  240.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  241. }
  242.  
  243. static UWORD ComputeY( UWORD value )
  244. {
  245.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  246. }
  247.  
  248. static void ComputeFont( UWORD width, UWORD height )
  249. {
  250.     Font = &Attr;
  251.     Font->ta_Name = (STRPTR)screen->RastPort.Font->tf_Message.mn_Node.ln_Name;
  252.     Font->ta_YSize = FontY = screen->RastPort.Font->tf_YSize;
  253.     FontX = screen->RastPort.Font->tf_XSize;
  254.  
  255.     OffX = screen->WBorLeft;
  256.     OffY = screen->RastPort.TxHeight + screen->WBorTop + 1;
  257.  
  258.     if ( width && height ) {
  259.         if (( ComputeX( width ) + OffX + screen->WBorRight ) > screen->Width )
  260.             goto UseTopaz;
  261.         if (( ComputeY( height ) + OffY + screen->WBorBottom ) > screen->Height )
  262.             goto UseTopaz;
  263.     }
  264.     return;
  265.  
  266. UseTopaz:
  267.     Font->ta_Name = (STRPTR)"topaz.font";
  268.     FontX = FontY = Font->ta_YSize = 8;
  269. }
  270.  
  271. int HandleOptionsIDCMP( void )
  272. {
  273.     struct IntuiMessage    *m;
  274.     struct MenuItem        *n;
  275.     int            (*func)(void);
  276.     BOOL            running = TRUE;
  277.  
  278.     while( m = GT_GetIMsg( OptionsWnd->UserPort )) {
  279.  
  280.         CopyMem(( char * )m, ( char * )&OptionsMsg, (long)sizeof( struct IntuiMessage ));
  281.  
  282.         GT_ReplyIMsg( m );
  283.  
  284.         switch ( OptionsMsg.Class ) {
  285.  
  286.             case    IDCMP_REFRESHWINDOW:
  287.                 GT_BeginRefresh( OptionsWnd );
  288.                 GT_EndRefresh( OptionsWnd, TRUE );
  289.                 break;
  290.  
  291.             case    IDCMP_CLOSEWINDOW:
  292.                 running = OptionsCloseWindow();
  293.                 break;
  294.  
  295.             case    IDCMP_VANILLAKEY:
  296.                 running = OptionsVanillaKey();
  297.                 break;
  298.  
  299.             case    IDCMP_GADGETUP:
  300.             case    IDCMP_GADGETDOWN:
  301.                 func = ( void * )(( struct Gadget * )OptionsMsg.IAddress )->UserData;
  302.                 running = func();
  303.                 break;
  304.  
  305.             case    IDCMP_MENUPICK:
  306.                 while( OptionsMsg.Code != MENUNULL ) {
  307.                     n = ItemAddress( OptionsMenus, OptionsMsg.Code );
  308.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  309.                     running = func();
  310.                     OptionsMsg.Code = n->NextSelect;
  311.                 }
  312.                 break;
  313.         }
  314.     }
  315.     return( running );
  316. }
  317.  
  318. int OpenOptionsWindow( void )
  319. {
  320.     struct NewGadget    ng;
  321.     struct Gadget    *g;
  322.     UWORD        lc, tc;
  323.     UWORD        wleft = OptionsLeft, wtop = OptionsTop, ww, wh;
  324.  
  325.     ComputeFont( OptionsWidth, OptionsHeight );
  326.  
  327.     ww = ComputeX( OptionsWidth );
  328.     wh = ComputeY( OptionsHeight );
  329.  
  330.     if (( wleft + ww + OffX + screen->WBorRight ) > screen->Width ) wleft = screen->Width - ww;
  331.     if (( wtop + wh + OffY + screen->WBorBottom ) > screen->Height ) wtop = screen->Height - wh;
  332.  
  333.     if ( ! ( getClass = initGet()))
  334.         return( 3L );
  335.  
  336.     if ( ! ( getImage = NewObject( getClass, NULL, GT_VisualInfo, (ULONG) my_VisualInfo, TAG_DONE )))
  337.         return( 4L );
  338.  
  339.  
  340.     if ( ! ( g = CreateContext( &OptionsGList )))
  341.         return( 1L );
  342.  
  343.     for( lc = 0, tc = 0; lc < Options_CNT; lc++ ) {
  344.  
  345.         CopyMem((char * )&OptionsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  346.  
  347.         ng.ng_VisualInfo = my_VisualInfo;
  348.         ng.ng_TextAttr   = Font;
  349.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  350.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  351.  
  352.         if ( OptionsGTypes[ lc ] != GENERIC_KIND ) {
  353.             ng.ng_Width      = ComputeX( ng.ng_Width );
  354.             ng.ng_Height     = ComputeY( ng.ng_Height);
  355.         }
  356.  
  357.         OptionsGadgets[ lc ] = g = CreateGadgetA((ULONG)OptionsGTypes[ lc ], g, &ng, ( struct TagItem * )&OptionsGTags[ tc ] );
  358.  
  359.         if ( OptionsGTypes[ lc ] == GENERIC_KIND ) {
  360.             g->Flags             |= GFLG_GADGIMAGE | GFLG_GADGHIMAGE;
  361.             g->Activation        |= GACT_RELVERIFY;
  362.             g->GadgetRender       = (APTR)getImage;
  363.             g->SelectRender       = (APTR)getImage;
  364.         }
  365.  
  366.         while( OptionsGTags[ tc ] ) tc += 2;
  367.         tc++;
  368.  
  369.         if ( NOT g )
  370.             return( 2L );
  371.     }
  372.     if ( ! ( OptionsMenus = CreateMenus( OptionsNewMenu, TAG_DONE )))
  373.         return( 5L );
  374.  
  375.     LayoutMenus( OptionsMenus, my_VisualInfo, GTMN_NewLookMenus, TRUE, TAG_DONE );
  376.  
  377.     if ( ! ( OptionsWnd = OpenWindowTags( NULL,
  378.                 WA_Left,    wleft,
  379.                 WA_Top,        wtop,
  380.                 WA_Width,    ww + OffX + screen->WBorRight,
  381.                 WA_Height,    wh + OffY + screen->WBorBottom,
  382.                 WA_IDCMP,    INTEGERIDCMP|LISTVIEWIDCMP|BUTTONIDCMP|MXIDCMP|CYCLEIDCMP|STRINGIDCMP|CHECKBOXIDCMP|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  383.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  384.                 WA_Gadgets,    (ULONG) OptionsGList,
  385.                 WA_Title,    (ULONG) OptionsWdt,
  386.                 WA_NewLookMenus,    TRUE,
  387.                 WA_PubScreen, (ULONG) screen,
  388.                 TAG_DONE )))
  389.     return( 4L );
  390.  
  391.     SetMenuStrip( OptionsWnd, OptionsMenus );
  392.     GT_RefreshWindow( OptionsWnd, NULL );
  393.  
  394.     return( 0L );
  395. }
  396.  
  397. void CloseOptionsWindow( void )
  398. {
  399.     if ( OptionsMenus      ) {
  400.         ClearMenuStrip( OptionsWnd );
  401.         FreeMenus( OptionsMenus );
  402.         OptionsMenus = NULL;    }
  403.  
  404.     if ( OptionsWnd        ) {
  405.         CloseWindow( OptionsWnd );
  406.         OptionsWnd = NULL;
  407.     }
  408.  
  409.     if ( OptionsGList      ) {
  410.         FreeGadgets( OptionsGList );
  411.         OptionsGList = NULL;
  412.     }
  413.  
  414.     if ( getImage   ) {
  415.         DisposeObject( getImage );
  416.         getImage = NULL;
  417.     }
  418.  
  419.     if ( getClass   ) {
  420.         FreeClass( getClass );
  421.         getClass = NULL;
  422.     }
  423.  
  424. }
  425.  
  426. int HandleChoosePSIDCMP( void )
  427. {
  428.     struct IntuiMessage    *m;
  429.     int            (*func)(void);
  430.     BOOL            running = TRUE;
  431.  
  432.     while( m = GT_GetIMsg( ChoosePSWnd->UserPort )) {
  433.  
  434.         CopyMem(( char * )m, ( char * )&ChoosePSMsg, (long)sizeof( struct IntuiMessage ));
  435.  
  436.         GT_ReplyIMsg( m );
  437.  
  438.         switch ( ChoosePSMsg.Class ) {
  439.  
  440.             case    IDCMP_REFRESHWINDOW:
  441.                 GT_BeginRefresh( ChoosePSWnd );
  442.                 GT_EndRefresh( ChoosePSWnd, TRUE );
  443.                 break;
  444.  
  445.             case    IDCMP_CLOSEWINDOW:
  446.                 running = ChoosePSCloseWindow();
  447.                 break;
  448.  
  449.             case    IDCMP_VANILLAKEY:
  450.                 running = ChoosePSVanillaKey();
  451.                 break;
  452.  
  453.             case    IDCMP_GADGETUP:
  454.             case    IDCMP_GADGETDOWN:
  455.                 func = ( void * )(( struct Gadget * )ChoosePSMsg.IAddress )->UserData;
  456.                 running = func();
  457.                 break;
  458.         }
  459.     }
  460.     return( running );
  461. }
  462.  
  463. int OpenChoosePSWindow( void )
  464. {
  465.     struct NewGadget    ng;
  466.     struct Gadget    *g;
  467.     UWORD        lc, tc;
  468.     UWORD        wleft = ChoosePSLeft, wtop = ChoosePSTop, ww, wh;
  469.  
  470.     ComputeFont( ChoosePSWidth, ChoosePSHeight );
  471.  
  472.     ww = ComputeX( ChoosePSWidth );
  473.     wh = ComputeY( ChoosePSHeight );
  474.  
  475.     if (( wleft + ww + OffX + screen->WBorRight ) > screen->Width ) wleft = screen->Width - ww;
  476.     if (( wtop + wh + OffY + screen->WBorBottom ) > screen->Height ) wtop = screen->Height - wh;
  477.  
  478.     if ( ! ( g = CreateContext( &ChoosePSGList )))
  479.         return( 1L );
  480.  
  481.     for( lc = 0, tc = 0; lc < ChoosePS_CNT; lc++ ) {
  482.  
  483.         CopyMem((char * )&ChoosePSNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  484.  
  485.         ng.ng_VisualInfo = my_VisualInfo;
  486.         ng.ng_TextAttr   = Font;
  487.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  488.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  489.         ng.ng_Width      = ComputeX( ng.ng_Width );
  490.         ng.ng_Height     = ComputeY( ng.ng_Height);
  491.  
  492.         ChoosePSGadgets[ lc ] = g = CreateGadgetA((ULONG)ChoosePSGTypes[ lc ], g, &ng, ( struct TagItem * )&ChoosePSGTags[ tc ] );
  493.  
  494.         while( ChoosePSGTags[ tc ] ) tc += 2;
  495.         tc++;
  496.  
  497.         if ( NOT g )
  498.             return( 2L );
  499.     }
  500.  
  501.     if ( ! ( ChoosePSWnd = OpenWindowTags( NULL,
  502.                 WA_Left,    wleft,
  503.                 WA_Top,        wtop,
  504.                 WA_Width,    ww + OffX + screen->WBorRight,
  505.                 WA_Height,    wh + OffY + screen->WBorBottom,
  506.                 WA_IDCMP,    LISTVIEWIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  507.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  508.                 WA_Gadgets,    (ULONG) ChoosePSGList,
  509.                 WA_Title,    (ULONG) ChoosePSWdt,
  510.                 WA_ScreenTitle,    (ULONG) "Choose Public Screen",
  511.                 WA_PubScreen,    (ULONG) screen,
  512.                 TAG_DONE )))
  513.     return( 4L );
  514.  
  515.     GT_RefreshWindow( ChoosePSWnd, NULL );
  516.  
  517.     return( 0L );
  518. }
  519.  
  520. void CloseChoosePSWindow( void )
  521. {
  522.     if ( ChoosePSWnd        ) {
  523.         CloseWindow( ChoosePSWnd );
  524.         ChoosePSWnd = NULL;
  525.     }
  526.  
  527.     if ( ChoosePSGList      ) {
  528.         FreeGadgets( ChoosePSGList );
  529.         ChoosePSGList = NULL;
  530.     }
  531. }
  532.  
  533. int HandleGotoPageIDCMP( void )
  534. {
  535.     struct IntuiMessage    *m;
  536.     int            (*func)(void);
  537.     BOOL            running = TRUE;
  538.  
  539.     while( m = GT_GetIMsg( GotoPageWnd->UserPort )) {
  540.  
  541.         CopyMem(( char * )m, ( char * )&GotoPageMsg, (long)sizeof( struct IntuiMessage ));
  542.  
  543.         GT_ReplyIMsg( m );
  544.  
  545.         switch ( GotoPageMsg.Class ) {
  546.  
  547.             case    IDCMP_REFRESHWINDOW:
  548.                 GT_BeginRefresh( GotoPageWnd );
  549.                 GT_EndRefresh( GotoPageWnd, TRUE );
  550.                 break;
  551.  
  552.             case    IDCMP_CLOSEWINDOW:
  553.                 running = GotoPageCloseWindow();
  554.                 break;
  555.  
  556.             case    IDCMP_GADGETUP:
  557.             case    IDCMP_GADGETDOWN:
  558.                 func = ( void * )(( struct Gadget * )GotoPageMsg.IAddress )->UserData;
  559.                 running = func();
  560.                 break;
  561.         }
  562.     }
  563.     return( running );
  564. }
  565.  
  566. int OpenGotoPageWindow( void )
  567. {
  568.     struct NewGadget    ng;
  569.     struct Gadget    *g;
  570.     UWORD        lc, tc;
  571.     UWORD        wleft = GotoPageLeft, wtop = GotoPageTop, ww, wh;
  572.  
  573.     ComputeFont( GotoPageWidth, GotoPageHeight );
  574.  
  575.     ww = ComputeX( GotoPageWidth );
  576.     wh = ComputeY( GotoPageHeight );
  577.  
  578.     if (( wleft + ww + OffX + screen->WBorRight ) > screen->Width ) wleft = screen->Width - ww;
  579.     if (( wtop + wh + OffY + screen->WBorBottom ) > screen->Height ) wtop = screen->Height - wh;
  580.  
  581.     if ( ! ( g = CreateContext( &GotoPageGList )))
  582.         return( 1L );
  583.  
  584.     for( lc = 0, tc = 0; lc < GotoPage_CNT; lc++ ) {
  585.  
  586.         CopyMem((char * )&GotoPageNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  587.  
  588.         ng.ng_VisualInfo = my_VisualInfo;
  589.         ng.ng_TextAttr   = Font;
  590.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  591.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  592.         ng.ng_Width      = ComputeX( ng.ng_Width );
  593.         ng.ng_Height     = ComputeY( ng.ng_Height);
  594.  
  595.         GotoPageGadgets[ lc ] = g = CreateGadgetA((ULONG)GotoPageGTypes[ lc ], g, &ng, ( struct TagItem * )&GotoPageGTags[ tc ] );
  596.  
  597.         while( GotoPageGTags[ tc ] ) tc += 2;
  598.         tc++;
  599.  
  600.         if ( NOT g )
  601.             return( 2L );
  602.     }
  603.  
  604.     if ( ! ( GotoPageWnd = OpenWindowTags( NULL,
  605.                 WA_Left,    wleft,
  606.                 WA_Top,        wtop,
  607.                 WA_Width,    ww + OffX + screen->WBorRight,
  608.                 WA_Height,    wh + OffY + screen->WBorBottom,
  609.                 WA_IDCMP,    INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  610.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  611.                 WA_Gadgets,    (ULONG) GotoPageGList,
  612.                 WA_Title,    (ULONG) GotoPageWdt,
  613.                 WA_ScreenTitle,    (ULONG) "Goto Page",
  614.                 WA_PubScreen,    (ULONG) screen,
  615.                 TAG_DONE )))
  616.     return( 4L );
  617.  
  618.     GT_RefreshWindow( GotoPageWnd, NULL );
  619.  
  620.     return( 0L );
  621. }
  622.  
  623. void CloseGotoPageWindow( void )
  624. {
  625.     if ( GotoPageWnd        ) {
  626.         CloseWindow( GotoPageWnd );
  627.         GotoPageWnd = NULL;
  628.     }
  629.  
  630.     if ( GotoPageGList      ) {
  631.         FreeGadgets( GotoPageGList );
  632.         GotoPageGList = NULL;
  633.     }
  634. }
  635.